package com.ruoyi.system.service.impl;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.AuditAssigneeMapper;
import com.ruoyi.system.domain.AuditAssignee;
import com.ruoyi.system.service.IAuditAssigneeService;

/**
 * 节点候选人（用户级）Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-11-07
 */
@Service
public class AuditAssigneeServiceImpl extends ServiceImpl<AuditAssigneeMapper, AuditAssignee> implements IAuditAssigneeService
{
    @Autowired
    private AuditAssigneeMapper auditAssigneeMapper;

    /**
     * 查询节点候选人（用户级）
     * 
     * @param auditAssigneeId 节点候选人（用户级）主键
     * @return 节点候选人（用户级）
     */
    @Override
    public AuditAssignee selectAuditAssigneeByAssigneeId(Long auditAssigneeId)
    {
        return auditAssigneeMapper.selectAuditAssigneeByAssigneeId(auditAssigneeId);
    }

    /**
     * 查询节点候选人（用户级）列表
     * 
     * @param auditAssignee 节点候选人（用户级）
     * @return 节点候选人（用户级）
     */
    @Override
    public List<AuditAssignee> selectAuditAssigneeList(AuditAssignee auditAssignee)
    {
        return auditAssigneeMapper.selectAuditAssigneeList(auditAssignee);
    }

    /**
     * 查询节点候选人（用户级）列表
     *
     * @param auditAssignee 节点候选人（用户级）
     * @return 节点候选人（用户级）
     */
    @Override
    public List<AuditAssignee> myAssignee(AuditAssignee auditAssignee)
    {
        auditAssignee.setUserId(SecurityUtils.getUserId());
        return auditAssigneeMapper.myAssignee(auditAssignee);
    }

    /**
     * 新增节点候选人（用户级）
     * 
     * @param auditAssignee 节点候选人（用户级）
     * @return 结果
     */
    @Override
    public int insertAuditAssignee(AuditAssignee auditAssignee)
    {
        auditAssignee.setCreateTime(DateUtils.getNowDate());
        return auditAssigneeMapper.insertAuditAssignee(auditAssignee);
    }
    
    /**
     * 批量新增节点候选人（用户级）
     * 
     * @param auditAssignees 节点候选人（用户级）列表
     * @return 结果
     */
    @Override
    public int insertAuditAssignees(List<AuditAssignee> auditAssignees)
    {
        String username = SecurityUtils.getUsername();
        Date now = DateUtils.getNowDate();
        for (AuditAssignee auditAssignee : auditAssignees) {
            // 确保createBy和createTime被正确设置
            if (auditAssignee.getCreateBy() == null) {
                auditAssignee.setCreateBy(username);
            }
            if (auditAssignee.getCreateTime() == null) {
                auditAssignee.setCreateTime(now);
            }
        }
        this.saveBatch(auditAssignees);
        return auditAssignees.size();
    }

    /**
     * 修改节点候选人（用户级）
     * 
     * @param auditAssignee 节点候选人（用户级）
     * @return 结果
     */
    @Override
    public int updateAuditAssignee(AuditAssignee auditAssignee)
    {
        auditAssignee.setUpdateTime(DateUtils.getNowDate());
        return auditAssigneeMapper.updateAuditAssignee(auditAssignee);
    }

    /**
     * 批量删除节点候选人（用户级）
     * 
     * @param assigneeIds 需要删除的节点候选人（用户级）主键
     * @return 结果
     */
    @Override
    public int deleteAuditAssigneeByAssigneeIds(String[] assigneeIds)
    {
        return auditAssigneeMapper.deleteAuditAssigneeByAssigneeIds(assigneeIds);
    }

    /**
     * 删除节点候选人（用户级）信息
     * 
     * @param auditAssigneeId 节点候选人（用户级）主键
     * @return 结果
     */
    @Override
    public int deleteAuditAssigneeByAssigneeId(String auditAssigneeId)
    {
        return auditAssigneeMapper.deleteAuditAssigneeByAssigneeId(auditAssigneeId);
    }
}